package com.xbongbong.sys.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

import java.util.Objects;

/**
 * 数据权限枚举
 * @author kaka
 * @time 2018-10-16 10:33
 */
@Getter
public enum  DataPermissionEnum {

    /**
     * 仅本人，最小数据权限
     */
    SELF(1, "enum.dataPermission.memo.self"),

    /**
     * 主管部门数据权限，可以看到本部门下属的数据
     * 不递归
     */
    DEPARTMENT(2, "enum.dataPermission.memo.department"),

    /**
     * 主管部门及下属部门，可以看到本部门及下属部门下属的数据
     * 递归
     */
    DEPARTMENT_RECURSION(3, "enum.dataPermission.memo.department_recursion"),

    /**
     * 自定义权限，对应助理
     */
    CUSTOM(4, "enum.dataPermission.memo.custom"),

    /**
     * 全公司权限
     */
    ALL(5, "enum.dataPermission.memo.all");

    /**
     * 数据权限值
     */
    private Integer code;

    /**
     * 数据权限中文描述
     */
    private String memo;

    DataPermissionEnum(Integer code, String memo) {
        this.code = code;
        this.memo = memo;
    }

    /**
     * 根据code值获取枚举
     * @param code 枚举code
     * @return com.xbongbong.sys.enums.DataPermissionEnum 数据权限枚举
     * @author zcp
     * @date 2019/2/19 14:53
     * @since v1.0
     * @version v1.0
     */
    public static DataPermissionEnum getByCode(Integer code) {
        for (DataPermissionEnum cache : values()) {
            if (Objects.equals(cache.getCode(), code)) {
                return cache;
            }
        }
        return null;
    }

    public String getName() {
        return I18nMessageUtil.getMessage(memo);
    }
}
